3.1 传输层原理概述

传输层作为网络分层结构模型中间的一层,我们需要从两个方向来考察它。从向上层提供服务的角度来看,传输层向上层(应用层)提供 进程与进程之间的、以报文为单位的逻辑通信;从利用下层提供服务实现自己的功能的角度来看,传输层使用下层(网络层)所提供的主机到主机的传输服务,并将其扩展为进程到进程之间的传输功能。与此同时,弥补网络层的不可靠服务带来的诸如丢失、乱序等缺陷,实现并提供可靠数据传输的服务。当然,传输层协议并非无所不能,它也受制于网络层协议的服务模型,例如网络层协议一般无法提供传输的延迟与带宽保证,则传输层协议同样无法实现这一点。

传输层的协议数据单元被称作 报文段(Segment)。传输层实体接收到应用层传下来的报文后,可能会依据协议将其分解为若干个报文段,为每个报文段加上传输层的头部信息后向下交给网络层负责传输。接收方接收到一个个报文段后,拆出并解析这些报文段,据此将报文段重组为应用层报文,向上传递。

前面提到过,传输层协议可以拓展网络层提供的主机到主机的通信服务,提供进程到进程的服务,这是通过 多路复用(Multiplexing)多路分解(Demultiplexing) 实现的。除此之外,网络层的 IP 协议是一个 尽力而为的不可靠服务,其不对主机之间通信报文段的交付做任何确保(是否保序、是否按时、是否完整无错)。因此,传输层协议需要实现 差错检查,保证报文的完整性。多路复用解复用与差错检查是传输层需要提供的最低限度的服务。

传输层可供选择的协议中,老生常谈的有 TCP 与 UDP。UDP 就是上面所述的只提供多路复用解复用与差错检查的一个协议。而 TCP 与 UDP 相比带有诸如 可靠数据传输、流量控制、拥塞控制 的附加机制。然而,这两个协议都没有对安全性做任何保证,因此一些新的传输层协议例如 TLS 协议补上了这一点。